링크된 문서
GitHub
GitHub
GitHub MCP 서버는 GitHub API와 상호작용할 수 있는 Model Context Protocol 서버입니다. 이 서버는 LLM이 GitHub 저장소 관리, 파일 작업, 이슈 및 풀 리퀘스트 관리 등 GitHub의 다양한 기능에 접근할 수 있도록 표준화된 인터페이스를 제공합니다.
특징
- GitHub 저장소 검색, 생성, 관리
- 파일 내용 조회, 생성, 수정
- 이슈 생성, 조회, 코멘트 관리
- 풀 리퀘스트 생성, 리뷰, 병합
- 브랜치 관리 및 커밋 조회
- 코드 보안 관련 기능
- 사용자 및 조직 관리
- 커스터마이징 가능한 도구 세트
API
리소스
GitHub MCP 서버는 리소스를 통해 저장소 내용, 파일, 및 기타 GitHub 콘텐츠에 접근할 수 있습니다.
도구
GitHub MCP 서버는 다양한 도구 세트를 통해 GitHub API의 기능을 제공합니다. 이 도구 세트는 구성에 따라 활성화하거나 비활성화할 수 있습니다.
저장소 관리
search_repositories
GitHub 저장소를 검색합니다. - 입력: - query: 검색 쿼리 - page: 페이지 번호 (기본값: 1) - perPage: 페이지당 결과 수 (기본값: 30, 최대: 100)
create_repository
새 GitHub 저장소를 생성합니다. - 입력: - name: 저장소 이름 - description: 저장소 설명(선택적) - private: 비공개 저장소 여부 - autoInit: README.md로 초기화 여부
get_file_contents
GitHub 저장소에서 파일 또는 디렉터리 내용을 가져옵니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - path: 파일 또는 디렉터리 경로 - branch: 브랜치 이름(선택적)
create_or_update_file
GitHub 저장소에서 단일 파일을 생성하거나 업데이트합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - path: 파일 경로 - content: 파일 내용 - message: 커밋 메시지 - branch: 브랜치 이름 - sha: 업데이트할 파일의 SHA(기존 파일 업데이트 시 필요)
push_files
여러 파일을 GitHub 저장소에 한 번의 커밋으로 푸시합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - branch: 푸시할 브랜치 - files: 푸시할 파일 배열(각 항목은 path와 content 포함) - message: 커밋 메시지
이슈 관리
create_issue
GitHub 저장소에 새 이슈를 생성합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - title: 이슈 제목 - body: 이슈 내용(선택적) - labels: 라벨 배열(선택적) - assignees: 담당자 배열(선택적) - milestone: 마일스톤 번호(선택적)
list_issues
GitHub 저장소의 이슈를 필터링하여 나열합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - state: 이슈 상태(open, closed, all) - labels: 라벨 배열(선택적) - sort: 정렬 기준(created, updated, comments) - direction: 정렬 방향(asc, desc) - since: 특정 날짜 이후 이슈만 포함(선택적) - page: 페이지 번호(선택적) - per_page: 페이지당 결과 수(선택적)
update_issue
기존 GitHub 이슈를 업데이트합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - issue_number: 이슈 번호 - title: 새 이슈 제목(선택적) - body: 새 이슈 내용(선택적) - state: 이슈 상태(open, closed)(선택적) - labels: 새 라벨 배열(선택적) - assignees: 새 담당자 배열(선택적) - milestone: 새 마일스톤 번호(선택적)
add_issue_comment
이슈에 댓글을 추가합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - issue_number: 이슈 번호 - body: 댓글 내용
get_issue
특정 이슈의 세부 정보를 가져옵니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - issue_number: 이슈 번호
풀 리퀘스트 관리
create_pull_request
GitHub 저장소에 새 풀 리퀘스트를 생성합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - title: 풀 리퀘스트 제목 - head: 변경사항이 구현된 브랜치 이름 - base: 변경사항을 병합할 대상 브랜치 이름 - body: 풀 리퀘스트 설명(선택적) - draft: 드래프트 풀 리퀘스트 생성 여부(선택적) - maintainer_can_modify: 관리자가 풀 리퀘스트를 수정할 수 있는지 여부(선택적)
list_pull_requests
GitHub 저장소의 풀 리퀘스트를 필터링하여 나열합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - state: 상태(open, closed, all)(선택적) - sort: 정렬 기준(created, updated, popularity, long-running)(선택적) - direction: 정렬 방향(asc, desc)(선택적) - base: 베이스 브랜치 이름으로 필터링(선택적) - head: 헤드 브랜치 이름으로 필터링(선택적) - page: 페이지 번호(선택적) - per_page: 페이지당 결과 수(선택적)
get_pull_request
특정 풀 리퀘스트의 세부 정보를 가져옵니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - pull_number: 풀 리퀘스트 번호
create_pull_request_review
풀 리퀘스트에 리뷰를 생성합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - pull_number: 풀 리퀘스트 번호 - body: 리뷰 내용 - event: 리뷰 액션(APPROVE, REQUEST_CHANGES, COMMENT) - comments: 리뷰 코멘트 배열(선택적) - commit_id: 리뷰할 커밋의 SHA(선택적)
merge_pull_request
풀 리퀘스트를 병합합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - pull_number: 풀 리퀘스트 번호 - commit_title: 자동 커밋 메시지의 제목(선택적) - commit_message: 자동 커밋 메시지에 추가할 상세 내용(선택적) - merge_method: 병합 방법(merge, squash, rebase)(선택적)
브랜치 및 코드 관리
create_branch
GitHub 저장소에 새 브랜치를 생성합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - branch: 새 브랜치 이름 - from_branch: 원본 브랜치 이름(선택적, 기본값: 저장소의 기본 브랜치)
search_code
GitHub에서 코드를 검색합니다. - 입력: - q: 검색 쿼리 - order: 정렬 방향(asc, desc)(선택적) - page: 페이지 번호(최소 1)(선택적) - per_page: 페이지당 결과 수(최소 1, 최대 100)(선택적)
list_commits
GitHub 저장소의 브랜치에서 커밋 목록을 가져옵니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - sha: 브랜치 이름(선택적) - page: 페이지 번호(선택적) - perPage: 페이지당 결과 수(선택적)
fork_repository
GitHub 저장소를 사용자 계정이나 지정된 조직으로 포크합니다. - 입력: - owner: 저장소 소유자(사용자 이름 또는 조직) - repo: 저장소 이름 - organization: 포크할 조직(선택적, 기본값: 개인 계정)
사용 방법
GitHub MCP 서버는 다음과 같이 구성할 수 있습니다:
-
Docker를 사용한 실행:
docker run -i --rm \ -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \ -e GITHUB_TOOLSETS="repos,issues,pull_requests,code_security,experiments" \ ghcr.io/github/github-mcp-server -
Claude Desktop 구성:
{ "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } } -
도구 세트 구성: GitHub MCP 서버는
--toolsets플래그를 통해 특정 기능 그룹을 활성화하거나 비활성화할 수 있습니다. 기본적으로 모든 도구 세트가 활성화되어 있으며, 다음과 같은 도구 세트를 사용할 수 있습니다: - repos: 저장소 관련 도구
- issues: 이슈 관련 도구
- pull_requests: 풀 리퀘스트 관련 도구
- code_security: 코드 보안 관련 도구
- experiments: 실험적 도구
- all: 모든 도구 세트 활성화
GitHub API 통합 설정
GitHub MCP 서버를 사용하기 전에 다음 단계를 완료해야 합니다:
- GitHub 개인 액세스 토큰(PAT) 생성:
- GitHub 설정에서 개발자 설정 → 개인 액세스 토큰으로 이동
- 필요한 권한을 선택하고 토큰 생성
-
생성된 토큰을 안전하게 저장
-
Docker 설치:
- GitHub MCP 서버를 컨테이너로 실행하려면 Docker가 필요합니다.
- Docker가 설치되어 있고 실행 중인지 확인
보안 고려사항
- 개인 액세스 토큰은 매우 민감한 정보이므로 안전하게 관리해야 합니다.
- 필요한 최소한의 권한만 부여한 토큰을 사용하세요.
- AI 도구에게 제공하는 GitHub API 기능을 제어하려면
--toolsets플래그를 사용하여 필요한 도구 세트만 활성화하세요. - 환경 변수나 구성 파일에 저장된 토큰을 안전하게 관리하세요.
연결된 구성 요소
- Git - 로컬 Git 저장소와 상호작용하기 위한 MCP 서버
- GitLab - GitLab API 통합을 제공하는 MCP 서버
- Filesystem - 안전한 파일 작업을 제공하는 MCP 서버
- Azure DevOps - Azure DevOps 서비스에 대한 브리지를 제공하는 MCP 서버